Consigna inicial:
Utilizando el set de datos ar_properties.csv, construir un dataset más pequeño que tenga las propiedades de Boedo, Colegiales, Centro / Microcentro, Mataderos y Puerto Madero. Cuántas propiedades hay en cada barrio?
datos <- read.csv("ar_properties.csv")
filtro_barrios <- is.element(datos$l3,"Boedo") |
is.element(datos$l3,"Colegiales") |
is.element(datos$l3,"Centro / Microcentro") |
is.element(datos$l3,"Mataderos") |
is.element(datos$l3,"Puerto Madero")
filtro_localidad <- is.element(datos$l2,"Capital Federal")
filtro_pais <- is.element(datos$l1,"Argentina")
filtros <- filtro_pais & filtro_localidad & filtro_barrios
datos_filtrados <- datos[filtros,]
datos_filtrados
Propiedades con superficie total faltante:
nrow(datos_filtrados[is.na(datos_filtrados$surface_total),])
## [1] 722
Propiedades con superficie cubierta faltante:
nrow(datos_filtrados[is.na(datos_filtrados$surface_covered),])
## [1] 931
Propiedades con número de ambientes faltante:
nrow(datos_filtrados[is.na(datos_filtrados$rooms),])
## [1] 3088
Propiedades con número de ambientes y superficie faltante:
nrow((datos_filtrados[is.na(datos_filtrados$rooms)&is.na(datos_filtrados$surface_total),]))
## [1] 313
#Superficies por barrio
hist(datos_filtrados$surface_covered[datos_filtrados$l3=="Boedo"],
col="green4", main = "Superficie en Boedo", right=TRUE,
breaks = 50, xlim=c(1,600), xlab = "Metros cuadrados totales",
ylab="Cantidad")
hist(datos_filtrados$surface_covered[datos_filtrados$l3=="Boedo"],
col="green4", main = "Superficie en Boedo (hasta 100 metros
cuadrados)", right=TRUE, breaks = 1000, xlim=c(1,100), xlab =
"Metros cuadrados totales",ylab="Cantidad")
barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
"Boedo"]),decreasing=TRUE), cex.names=1.4,
col="green4",main="Cantidad de Ambientes en Boedo", ylim=c(0,250))
hist(datos_filtrados$surface_covered[datos_filtrados$l3==
"Colegiales"],col="blue4", main = "Superficie en Colegiales", right=TRUE,
breaks = 750, xlim=c(1,900), xlab = "Metros cuadrados
totales",ylab="Cantidad")
hist(datos_filtrados$surface_covered[datos_filtrados$l3=="Colegiales"],
col="blue4", main = "Superficie en Colegiales (hasta 100 metros
cuadrados)", right=TRUE,
breaks = 1000, xlim=c(1,100), xlab = "Metros cuadrados
totales",ylab="Cantidad")
barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
"Colegiales"]),decreasing=TRUE), cex.names=1.4,
col="blue4",main="Cantidad de Ambientes en
Colegiales", ylim=c(0,350))
hist(datos_filtrados$surface_covered[datos_filtrados$l3==
"Centro / Microcentro"], col="red4", main = "Superficie
en Centro / Microcentro ", right=TRUE, breaks = 750,
xlab = "Metros cuadrados totales",
ylab="Cantidad", xlim=c(1,1000))
hist(datos_filtrados$surface_covered[datos_filtrados$l3==
"Centro / Microcentro"], col="red4", main = "Superficie
en Centro / Microcentro (hasta 100 metros
cuadrados)", right=TRUE, breaks = 10000,xlab = "Metros cuadrados totales",
ylab="Cantidad", xlim=c(1,200))
barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
"Centro / Microcentro"]),decreasing=TRUE),
cex.names=1.4, col="red4",main="Cantidad de Ambientes en
Centro / Microcentro", ylim=c(0,350))
hist(datos_filtrados$surface_covered[datos_filtrados$l3==
"Puerto Madero"], col="orange3", main = "Superficie en
Puerto Madero", right=TRUE,breaks = 750, xlim=c(1,1000), xlab = "Metros cuadrados totales",ylab="Cantidad")
hist(datos_filtrados$surface_covered[datos_filtrados$l3==
"Puerto Madero"], col="orange3", main = "Superficie en
Puerto Madero (hasta 100 metros
cuadrados)", right=TRUE,breaks = 5000, xlim=c(1,200), xlab = "Metros cuadrados totales",ylab="Cantidad")
barplot(sort(table(datos_filtrados$rooms[datos_filtrados$l3==
"Puerto Madero"]),decreasing=TRUE), cex.names=1.4,
col="orange3",main="Cantidad de Ambientes en Puerto
Madero", ylim=c(0,350))
#3. A partir de los gráficos realizados en el punto anterior, explorar la posibilidad de que haya datos faltantes que estén codificados de otra forma.
Hay propiedades que figuran con una superficie total de 0 metros cuadrados, lo cual es imposible. Podemos pensar que son datos faltantes codificados como 0.
Promedio de Superficie
barrios <- unique(datos_filtrados$l3)
barrios <- barrios[!is.na(barrios)]
barrios <- droplevels(barrios)
promedio <- c()
desvio <- c()
mediana <- c()
minimo <- c()
maximo <- c()
Cuartil1 <- c()
cuartil3 <- c()
for (barrio in barrios) {
promedio <- c(promedio,
mean(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T))
desvio <- c(desvio, sd(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T))
mediana <- c(mediana, median(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T))
minimo <- c(minimo, min(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T))
maximo <- c(maximo, max(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T))
Cuartil1 <- c(Cuartil1, quantile(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T,
probs = 0.25))
cuartil3 <- c(cuartil3, quantile(datos_filtrados$surface_total
[datos_filtrados$l3==barrio],na.rm = T,
probs = 0.75))
}
resumen <- data.frame(Barrio=barrios, Minimo=minimo, C1=Cuartil1, C2=mediana, Promedio=promedio, C3=cuartil3, Maximo=maximo, Desvio_Standar=desvio)
resumen
4.a En todos los casos el promedio es muy superior a la mediana.
4.b Boedo entre 10 y 12700 Colegiales entre y 4500 Centro / Microcentro entre 10 y 23400 Puerto Madero entre 0 y 10400 Mataderos entre 18 y 2700
4.c El barrio con la superficie más grande es Centro / Microcentro
4.d En el barrio que más varían las superficies es Centro / Microcentro
#5 Construir boxplot sum(datos_filtrados\(surface_covered[datos_filtrados\)l3==barrio],paralelos para la superficie y el número de habitaciones, separados por barrio.
datos_filtrados$l3 <- droplevels(datos_filtrados$l3)
boxplot(surface_total ~ l3, datos_filtrados, pch=18,las=0, outline=FALSE, cex.axis=0.7)
boxplot(rooms ~ l3, datos_filtrados, pch=18, outline=FALSE, cex.axis=0.7)
#6 Explorar el tamaño de una habitación promedio en los distintos
barrios. Construir esta variable con el nombre surface_covered /
rooms
hab_prom <- c()
for (barrio in barrios){
hab_prom <- c(hab_prom,mean(datos_filtrados$surface_covered[datos_filtrados$l3==barrio]/
datos_filtrados$rooms[datos_filtrados$l3==barrio], na.rm = T))
}
resumen$Habitacion_promedio <- hab_prom
resumen
barplot(resumen$Habitacion_promedio, names.arg = resumen$Barrio, cex.names = 0.7)
#2. Relación entre el precio y las caracterı́sticas de una propieda. Retener únicamente las propiedades cuyo precio esté en dolares.
datos_filtr_usd <- datos_filtrados[is.element(datos_filtrados$currency,"USD"),]
datos_filtr_usd
datos_filtr_usd$fondo <- datos_filtr_usd$surface_total-datos_filtr_usd$surface_covered
datos_filtr_usd
colores=c("gray2", "blue", "red")
datos_filtr_usd$operation_type <- factor(datos_filtr_usd$operation_type, levels = c("Venta", "Alquiler", "Alquiler temporal"))
plot(jitter(datos_filtr_usd$surface_total), jitter(datos_filtr_usd$price), main="Precio por superficie total", type="p",xlab="Superficie Total", ylab="Precio (USD)", xlim = c(0,500), ylim = c(0,2000000),col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
plot(datos_filtr_usd$surface_total, log(datos_filtr_usd$price), main="Precio por superficie total (log)", type="p",xlab="Superficie Total", ylab="Precio (USD)",xlim = c(0,2000),col =colores[datos_filtr_usd$operation_type] )
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
plot(jitter(datos_filtr_usd$surface_covered), jitter(datos_filtr_usd$price), main="Precio por superficie Cubierta", type="p",xlab="Superficie Cubierta", ylab="Precio (USD)", xlim = c(0,500), ylim = c(0,1000000),col =colores[datos_filtr_usd$operation_type])
smoothScatter(datos_filtr_usd$surface_covered, datos_filtr_usd$price, main="Precio por superficie Cubierta",xlab="Superficie Cubierta", ylab="Precio (USD)",xlim = c(0,500), ylim = c(0,1000000) )
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
plot(jitter(datos_filtr_usd$surface_covered), log(datos_filtr_usd$price), main="Precio por superficie Cubierta (log)", type="p",xlab="Superficie Cubierta", ylab="Precio (USD)", xlim = c(0,2000),col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
plot(jitter(datos_filtr_usd$fondo[datos_filtr_usd$fondo>0]), jitter(datos_filtr_usd$price[datos_filtr_usd$fondo>0]), main="Precio por fondo", type="p",xlab="Fondo", ylab="Precio (USD)",col =colores[datos_filtr_usd$operation_type],xlim=c(0,50),ylim=c(0,300000))
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
plot(log(jitter(datos_filtr_usd$fondo[datos_filtr_usd$fondo>0])), log(jitter(datos_filtr_usd$price[datos_filtr_usd$fondo>0])), main="Precio por fondo (log)", type="p",xlab="Fondo", ylab="Precio (USD)",col =colores[datos_filtr_usd$operation_type],xlim=c(0,5))
## Warning in log(jitter(datos_filtr_usd$price[datos_filtr_usd$fondo > 0])): Se
## han producido NaNs
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
datos_filtr_usd$hab_prom <- datos_filtr_usd$surface_covered/datos_filtr_usd$rooms
plot(datos_filtr_usd$hab_prom, datos_filtr_usd$price, main="Precio por Habitacion Promedio", type="p",xlab="Habitación promedio (en m2)", ylab="Precio (USD)",xlim = c(0,100),ylim = c(0,6000),col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)
plot(datos_filtr_usd$hab_prom, log(datos_filtr_usd$price), main="Precio por Habitacion Promedio (log)", type="p",xlab="Habitación promedio (en m2)", ylab="Precio (USD)", xlim = c(0,80), col =colores[datos_filtr_usd$operation_type])
legend("topright",legend=levels(datos_filtr_usd$operation_type), fill=colores)